FSM API icon

FSM API

(0 reviews)

API Specification FR

L'API FSM prend en charge les endpoints suivants :

POST /rest/v2/tickets

Ce endpoint nécessite l'en-tête HTTP ci-dessous

Content-type: application/json
X-Conversation-Id: {Paramètre d'en-tête facultatif fourni par le client}
client_id: {paramètre d'en-tête obligatoire fourni par la plate-forme Dali}
client_secret: {paramètre d'en-tête obligatoire fourni par la plate-forme Dali}

Envoyer une demande d'intervention à l'application LOOMA

Le body à mettre dans l'opération POST a le format suivant ::

{
  "ticketExternalId": "nom du ticket dans le système partenaire",
  "ticketBusinessStatus": "Statut LOOMA du ticket",
  "ticketPriority": "priorité du ticket",
  "ticketType": "type business du ticket (exemple : maintenance corrective)",
  "problemTypeCode": "domaine contractuel fixe de VFF",
  "ticketOriginCode": "Code origine du ticket",
  "ticketClient": "nom du client lié au ticket",
  "companyName": "nom de l'environnement LOOMA",
  "ticketSubject": "sujet du ticket",
  "ticketRemarks": "remarque du ticket",
  "lastActivityRemark": "note du technicien lors de sa dernière intervention",
  "dutyFlag": boolean,
  "outsideBundleFlag": boolean,
  "clientPresenceFlag": boolean,
  "doNotStartBeforeDate": "yyyy-mm-ddThh:mm:ssZ",
  "ticketClientValidator": "email du validateur",
  "workImpactUrgency": "priorité dans mon travail",
  "workEnvironmentImpactUrgency": "priorité dans mon environnement",
  "siteArrivalContractualDate": "yyyy-mm-ddThh:mm:ssZ",
  "siteId": "site d'intervention",
  "contactExternalId": "identifiant du contact",
  "contactEmailAddress": "email du contact",
  "contactFirstName": "prénom du contact",
  "contactLastName": "nom du contact",
  "contactMobilePhone": "numéro de portable du contact",
  "additionalContact": "contact additionnel",
  "ticketEquipmentId": "Id de l'équipement du ticket",
  "serviceLevel1": "catalogue de service categorie 1",
  "serviceLevel2": "catalogue de service categorie 2",
}

PATCH /rest/v2/tickets/{ticketId}

Modifier une demande d'intervention par son identifiant

Le body à mettre dans l'opération PATCH a le format suivant :

{
  "ticketExternalId": "nom du ticket dans le système partenaire",
  "ticketBusinessStatus": "Statut LOOMA du ticket",
  "ticketPriority": "priorité du ticket",
  "ticketType": "type business du ticket (exemple : maintenance corrective)",
  "problemTypeCode": "domaine contractuel fixe de VFF",
  "ticketOriginCode": "Code origine du ticket",
  "ticketClient": "nom du client lié au ticket",
  "companyName": "nom de l'environnement LOOMA",
  "ticketSubject": "sujet du ticket",
  "ticketRemarks": "remarque du ticket",
  "lastActivityRemark": "note du technicien lors de sa dernière intervention",
  "dutyFlag": boolean,
  "outsideBundleFlag": boolean,
  "clientPresenceFlag": boolean,
  "doNotStartBeforeDate": "yyyy-mm-ddThh:mm:ssZ",
  "ticketClientValidator": "email du validateur",
  "workImpactUrgency": "priorité dans mon travail",
  "workEnvironmentImpactUrgency": "priorité dans mon environnement",
  "siteArrivalContractualDate": "yyyy-mm-ddThh:mm:ssZ",
  "siteId": "site d'intervention",
  "contactExternalId": "identifiant du contact",
  "contactEmailAddress": "email du contact",
  "contactFirstName": "prénom du contact",
  "contactLastName": "nom du contact",
  "contactMobilePhone": "numéro de portable du contact",
  "additionalContact": "contact additionnel",
  "ticketEquipmentId": "Id de l'équipement du ticket",
  "serviceLevel1": "catalogue de service categorie 1",
  "serviceLevel2": "catalogue de service categorie 2",
}

PATCH /rest/v2/tickets

Modifier une demande d'intervention par son code interne/ son identifiant externe

Ce endpoint prend en charge les paramètres de requête suivants et leurs combinaisons:

  • ticketCode={ticketCode}: paramètre de requête permettant de faire PATCH sur une requête d'intervention par son code
  • ticketExternalId={ticketExternalId}: paramètre de requête permettant de faire PATCH sur une requête d'intervention par son identifiant externe

Le body à mettre dans l'opération PATCH a le format suivant :

{
  "ticketExternalId": "nom du ticket dans le système partenaire",
  "ticketBusinessStatus": "Statut LOOMA du ticket",
  "ticketPriority": "priorité du ticket",
  "ticketType": "type business du ticket (exemple : maintenance corrective)",
  "problemTypeCode": "domaine contractuel fixe de VFF",
  "ticketOriginCode": "Code origine du ticket",
  "ticketClient": "nom du client lié au ticket",
  "companyName": "nom de l'environnement LOOMA",
  "ticketSubject": "sujet du ticket",
  "ticketRemarks": "remarque du ticket",
  "lastActivityRemark": "note du technicien lors de sa dernière intervention",
  "dutyFlag": boolean,
  "outsideBundleFlag": boolean,
  "clientPresenceFlag": boolean,
  "doNotStartBeforeDate": "yyyy-mm-ddThh:mm:ssZ",
  "ticketClientValidator": "email du validateur",
  "workImpactUrgency": "priorité dans mon travail",
  "workEnvironmentImpactUrgency": "priorité dans mon environnement",
  "siteArrivalContractualDate": "yyyy-mm-ddThh:mm:ssZ",
  "siteId": "site d'intervention",
  "contactExternalId": "identifiant du contact",
  "contactEmailAddress": "email du contact",
  "contactFirstName": "prénom du contact",
  "contactLastName": "nom du contact",
  "contactMobilePhone": "numéro de portable du contact",
  "additionalContact": "contact additionnel",
  "ticketEquipmentId": "Id de l'équipement du ticket",
  "serviceLevel1": "catalogue de service categorie 1",
  "serviceLevel2": "catalogue de service categorie 2",
}

GET /rest/v2/tickets/{ticketId}

Recupérer une demande d'intervention par son ID

Ce endpoint nécessite l'en-tête HTTP ci-dessous

Content-type: application/json
X-Conversation-Id: {Paramètre d'en-tête facultatif fourni par le client}
client_id: {paramètre d'en-tête obligatoire fourni par la plate-forme Dali}
client_secret: {paramètre d'en-tête obligatoire fourni par la plate-forme Dali}
companyName : {paramètre d'en-tête obligatoire fourni par Vinci Facilities}

Le payload renvoyé par l'opération GET a le format suivant :

{
    "header": {

        "apiname" : "{nom de l'API}",
        "apiversion": "{version du schéma suivant le format à un chiffre X}",
        "correlationId": "{correlationId transmis tout au long de la transaction}"
    },
"data": [
{
  "ticketExternalId": "nom du ticket dans le système partenaire",
  "ticketId": "Id interne du ticket LOOMA",
  "ticketCode": "code interne du ticket LOOMA",
  "ticketBusinessStatus": "Statut LOOMA du ticket",
  "ticketPriority": "priorité du ticket",
  "ticketType": "type business du ticket (exemple : maintenance corrective)",
  "problemTypeCode": "domaine contractuel fixe de VFF",
  "ticketOriginCode": "Code origine du ticket",
  "ticketClient": "nom du client lié au ticket",
  "companyName": "nom de l'environnement LOOMA",
  "ticketSubject": "sujet du ticket",
  "ticketRemarks": "remarque du ticket",
  "lastActivityRemark": "note du technicien lors de sa dernière intervention",
  "dutyFlag": boolean,
  "outsideBundleFlag": boolean,
  "clientPresenceFlag": boolean,
  "doNotStartBeforeDate": "yyyy-mm-ddThh:mm:ssZ",
  "ticketClientValidator": "email du validateur",
  "workImpactUrgency": "priorité dans mon travail",
  "workEnvironmentImpactUrgency": "priorité dans mon environnement",
  "siteArrivalContractualDate": "yyyy-mm-ddThh:mm:ssZ",
  "siteId": "site d'intervention",
  "contactExternalId": "identifiant du contact",
  "contactEmailAddress": "email du contact",
  "contactFirstName": "prénom du contact",
  "contactLastName": "nom du contact",
  "contactMobilePhone": "numéro de portable du contact",
  "additionalContact": "contact additionnel",
  "ticketEquipmentId": "Id de l'équipement du ticket",
  "serviceLevel1": "catalogue de service categorie 1",
  "serviceLevel2": "catalogue de service categorie 2",
}
]

GET /rest/v2/tickets/

Récupérer une demande d'intervention par son code interne/ par son identifiant externe

Ce endpoint nécessite l'en-tête HTTP ci-dessous

Content-type: application/json
X-Conversation-Id: {Paramètre d'en-tête facultatif fourni par le client}
client_id: {paramètre d'en-tête obligatoire fourni par la plate-forme Dali}
client_secret: {paramètre d'en-tête obligatoire fourni par la plate-forme Dali}
companyName : {paramètre d'en-tête obligatoire fourni par Vinci Facilities}

Ce endpoint prend en charge les paramètres de requête suivants et leurs combinaisons:

  • ticketCode={ticketCode}: paramètre de requête permettant d'obtenir une requête d'intervention par son code interne
  • ticketExternalId={ticketExternalId}: paramètre de requête permettant d'obtenir une requête d'intervention par son identifiant externe

Le payload renvoyé par l'opération GET a le format suivant :

{
    "header": {

        "apiname" : "{nom de l'API}",
        "apiversion": "{version du schéma suivant le format à un chiffre X}",
        "correlationId": "{correlationId transmis tout au long de la transaction}"
    },
"data": [
{
  "ticketExternalId": "nom du ticket dans le système partenaire",
  "ticketId": "Id interne du ticket LOOMA",
  "ticketCode": "code interne du ticket LOOMA",
  "ticketBusinessStatus": "Statut LOOMA du ticket",
  "ticketPriority": "priorité du ticket",
  "ticketType": "type business du ticket (exemple : maintenance corrective)",
  "problemTypeCode": "domaine contractuel fixe de VFF",
  "ticketOriginCode": "Code origine du ticket",
  "ticketClient": "nom du client lié au ticket",
  "companyName": "nom de l'environnement LOOMA",
  "ticketSubject": "sujet du ticket",
  "ticketRemarks": "remarque du ticket",
  "lastActivityRemark": "note du technicien lors de sa dernière intervention",
  "dutyFlag": boolean,
  "outsideBundleFlag": boolean,
  "clientPresenceFlag": boolean,
  "doNotStartBeforeDate": "yyyy-mm-ddThh:mm:ssZ",
  "ticketClientValidator": "email du validateur",
  "workImpactUrgency": "priorité dans mon travail",
  "workEnvironmentImpactUrgency": "priorité dans mon environnement",
  "siteArrivalContractualDate": "yyyy-mm-ddThh:mm:ssZ",
  "siteId": "site d'intervention",
  "contactExternalId": "identifiant du contact",
  "contactEmailAddress": "email du contact",
  "contactFirstName": "prénom du contact",
  "contactLastName": "nom du contact",
  "contactMobilePhone": "numéro de portable du contact",
  "additionalContact": "contact additionnel",
  "ticketEquipmentId": "Id de l'équipement du ticket",
  "serviceLevel1": "catalogue de service categorie 1",
  "serviceLevel2": "catalogue de service categorie 2",
}
]
Nom de la baliseTypeDescriptionExemple
companyNameTextecompany LOOMA
ticketOriginCodeValeur fixeCanal de création"INTX"
contactEmailAddressTexteEmail du contact"prenom.nom@entreprise.com"
contactFirstNameTextePrénom du contact"prenom "
contactLastNameTexteNom du contact"nom "
contactMobilePhoneTexte40Téléphone du contact"0600000000 "
ticketSubjectTexteTitre du ticket"titre "
ticketRemarksTexteCommentaire du client"remarque "
problemTypeCodeListeDomaine"S-DEC"
ticketPriorityListePriorité (VF) LOW MEDIUM HIGH"LOW "
ticketEquipmentIdTexteEquipement ID LOOMA
ticketIdTexteID interne
ticketCodeTexteID Looma de la demande de service
ticketExternalIdTexteNuméro de ticket externe (système client)
siteIdTexteSite LOOMA
ticketTypeListe1Maintenance corrective
siteArrivalRealDateDate/heure default format YYYY-MM-DDTHH:MM:SSZ (gmt time)date de passage au statut 05 (en cours d'exécution)"2021-06-02T12:48:50+0200"
ticketClosingRealDateDate/heure default format YYYY-MM-DDTHH:MM:SSZ (gmt time)date de passage au statut 09 (clôture administrative) / date de passage au statut 07 (clôture proposé)"2021-06-02T12:48:50+0200"
ticketStartRealDateDate/heure default format YYYY-MM-DDTHH:MM:SSZ (gmt time)date de passage au statut 03 (pris en compte)"2021-06-02T12:48:50+0200"
lastActivityRemarkTexteDernière remarque du technicien
activitySchedulingDateDate/heure default format YYYY-MM-DDTHH:MM:SSZ (gmt time)date du passage au statut 04 (activité planifiée)"2021-06-02T12:48:50+0200"
buildingTexteBatiment LOOMA
floorTexteEtage LOOMA
localTexteLocal LOOMA
ticketCreationDateDate/heure default format YYYY-MM-DDTHH:MM:SSZ (gmt time)Date de création du ticket"2021-06-02T12:48:50+0200"
doNotStartBeforeDateDate/heure default format YYYY-MM-DDTHH:MM:SSZ (gmt time)Ne pas intervenir par le client"2021-06-02T12:48:50+0200"
ticketBusinessStatusListeStatut LOOMA"102"

POST /rest/v1/attachments

Envoyer une pièce jointe sur une demande de service à l'application LOOMA

Le body à mettre dans l'opération POST a le format suivant :

[{
  "attachmentFileName": "attachmentFileName.pdf",
  "ticketExternalId": "idExterne",
  "attachmentType": "PDF",
  "attachmentExternalId": "attachmentExternalId",
  "attachmentCategory": "LOOMA-XXX",
  "attachmentFileContent": "content"
}]
Nom de la baliseMandatoryTypeDescription
attachmentFileNameYTexteNom du fichier
attachmentTypeTexteType du fichier
attachmentExternalIdTexteId Externe de la pièce jointe
ticketExternalIdYTexteId Externe de la demande de service
attachmentCategoryYTexteCatégorie de la pièce jointe
AttachementFileContentTexteContenu du fichier (5 Mo maximum)

Les types de fichiers autorisés sont les suivants : pdf, jpeg, txt, png, xlsx, docx, jpg, xls, doc, ppt, pptx, csv, zip

GET /rest/v1/site-locations

Récupérer un site par son id

Ce endpoint nécessite l'en-tête HTTP ci-dessous

Content-type: application/json
X-Conversation-Id: {Paramètre d'en-tête facultatif fourni par le client}
client_id: {paramètre d'en-tête obligatoire fourni par la plate-forme Dali}
client_secret: {paramètre d'en-tête obligatoire fourni par la plate-forme Dali}

Ce endpoint prend en charge le paramètre de requête suivant et leur combinaison:

  • siteId={siteId}: paramètre de requête permettant d'obtenir une requête d'un site par son id

Le payload renvoyé par l'opération GET a le format suivant :

{
    "header": {
        "apiname" : "{nom de l'API}",
        "apiversion": "{version du schéma suivant le format à un chiffre X}",
        "correlationId": "{correlationId transmis tout au long de la transaction}"
    },
    "data": [
        {
            "siteId": "identifiant du site",
            "locationId": "id de localisation",
            "locationNodeId": "nodeId",
            "locationParentNodeId": "parentNodeId",
            "locationHierarchyLevel": "niveau hiérarchique",
            "locationDescription": "Description",
            "locationDesignation": "Désignation",
            "locationType": "Type de site",
            "subLevels": [
                {
                    "siteId": "identifiant du site",
                    "locationId": "id de localisation",
                    "locationNodeId": "nodeId",
                    "locationParentNodeId": "parentNodeId",
                    "locationHierarchyLevel": "niveau hiérarchique",
                    "locationDescription": "Description",
                    "locationDesignation": "Désignation",
                    "locationType": "Type de site"
                }
            ]
        }
    ],

POST /rest/v1/location-nodes

Envoyer un élément de localisation présent (batiment, étage, local) sur un site

Ce endpoint nécessite l'en-tête HTTP ci-dessous

Content-type: application/json
X-Conversation-Id: {Paramètre d'en-tête facultatif fourni par le client}
client_id: {paramètre d'en-tête obligatoire fourni par la plate-forme Dali}
client_secret: {paramètre d'en-tête obligatoire fourni par la plate-forme Dali}

Le body à mettre dans l'opération POST a le format suivant :

{
  "loomaTypeId": "Type",
  "siteId": "XXXX/00000XX",
  "superiorLocationId": "XXXX/00000XX/00X/000X",
  "typeId": "LOCAL TECHNIQUE",
  "locationName": "API location",
  "userStatusId": "XX",
  "sensitive": "true",
  "scope": "ScopeName"
}
Nom de la baliseMandatoryTypeDescription
loomaTypeIdYTexteType de localisation
siteIdTexteId du site
superiorLocationIdTexteId supérieur de localisation
typeIdYTexteType de localisation
locationNameYTexteNom de la localisation
userStatusIdTexteId statut de l'user
sensitiveTexteSensible
scopeTextePérimètre

Gestion des erreurs

#StatutTypeMessage d'erreur spécifiqueErreur
1400APIKIT:BAD_REQUESTRequired {field} not specifiedMauvais input lors d'un appel vers un endpoint de l'api
2404APIKIT:NOT_FOUND{endpoint}Endpoint inexistant ou mal renseigné
3400APIKIT:METHOD_NOT_ALLOWEDHTTP Method {method} not allowed for: {endpoint}Appel vers un endpoint avec une méthode non implémentée (ex : POST/PATCH/GET)
4400APIKIT:UNSUPPORTED_MEDIA_TYPEUnsupported mediatypeLe fichier joint n'est pas au bon format
5400HTTP:BAD_REQUESTYou must fill in one of the following query parameters : {parameters}Mauvais input renseigné lors d'un appel vers Looma
6404HTTP:NOT_FOUND{error message}Objet non trouvé lors d'un appel
7401HTTP:UNAUTHORIZED/CODEX:UNAUTHORIZED/LOOMA:UNAUTHORIZEDYou do not have the authorization for this operation.Appel non autorisé sur une méthode à partir d'un site donné
8422MULE:UNKNOWN::error://resource-is-not-validCA-201: Object [ServiceCall:XXXXX] doesn't have a unique externalId [XXXXXXXX]Message d'erreur envoyé par Looma : le ticket existe déjà
9403HTTP:FORBIDDEN/NOT_PERMITTEDYou do not have the authorization for this operation on this siteMéthode interdite pour l'utilisateur
10408HTTP:TIMEOUTTimeout exceededL'appel prend trop de temps et est parti en timeout
11500INTERNAL SERVER ERRORHTTP POST on resource {endpoint} failed: internal server error (500)Une erreur inconnue s'est produite
12403EMAIL:UNAUTHORIZEDThis contact is inactive on this site. You must have an active contact for this operation.Le contact technique est inactif sur le site appelé
1340*MULE:COMPOSITE_ROUTING{error message}Une erreur est survenu lors d'une récupération des données

Reviews